Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless communication devices such as radio telephone handsets, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, digital cameras, digital recording devices, video gaming devices, video game consoles, personal multimedia players, and the like. Such video devices may implement video compression techniques, such as those described in MPEG-2, MPEG-4, or ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), in order compress video data. Video compression techniques perform spatial and temporal prediction to reduce or remove redundancy inherent in video sequences. New standards, such as the High Efficiency Video Coding (HEVC) standard continue to emerge and evolve.
Many video coding standards and techniques use block-based video coding. Block-based video coding techniques divide the video data of a video frame (or portion thereof) into video blocks and then encode the video blocks using block-based compression techniques. The video blocks are encoded using one or more video-specific encoding techniques as well as general data compression techniques. Video encoding often includes motion estimation, motion compensation, transform (e.g., discrete cosine transforms (DCT)), quantization, and variable length coding.
In the ITU-T H.264 standard, the transforms are defined as 8 by 8 transforms. A 16 by 16 “macroblock” comprises four 8 by 8 luma blocks and two sub-sampled 8 by 8 chroma blocks. Each of these luma and chroma blocks is predictively coded to generate a residual block, which is transformed via the 8 by 8 transform into a block of transform coefficients. A so-called “coded block pattern (CBP)” is often included as syntax information, e.g., in a macroblock header of an H.264-complient bitstream, in order to signal whether each individual 8 by 8 residual block of transform coefficients has any non-zero data. If the CBP indicates that a given 8 by 8 residual block of transform coefficients does not have any non-zero data, then no coefficient data is communicated for that block. The use of 6-bit CBPs conventionally adds a number of bits of overhead to the macroblock header. However, CBPs also facilitate data compression because blocks of transform coefficients often do not include any non-zero data.